package com.paul.sys.util;

import com.paul.sys.tools.StringUtil;

import java.net.URLDecoder;
import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;


public class ParamUtil {
	private HttpServletRequest request;
	public ParamUtil(HttpServletRequest request){
		this.request = request ;
	}
	public String[] getParameterValues(String parameterName) {
		return request.getParameterValues(parameterName);
	}
	public Map<String, String> getParamMap() throws Exception{
		Map<String, String> paramMap = new LinkedHashMap<String, String>();
		Enumeration paramEnume = request.getParameterNames();

		while (paramEnume.hasMoreElements()) {
			String paramName = (String) paramEnume.nextElement();

			if( StringUtil.isNullStr(paramName) ){
				//if(paramValue.equals("")){
				continue;
			}
			
			String paramValue = getParameter(paramName, "").trim();
			
			if( StringUtil.isNullStr(paramValue) ){
				//if(paramValue.equals("")){
				continue;
			}

		//	System.out.println(paramName);
			
			if(paramValue.equals("all")){
				continue;
			}
			paramMap.put(paramName, URLDecoder.decode(paramValue,"UTF-8"));
		}

		
		return paramMap;
	}
	public String getParameter(String parameterName, String defaultValue) {
		String paramValue = getParameter(parameterName);
		// 假如无该变量参数，返回缺省值
		if (paramValue == null) {
			paramValue = defaultValue;
		}
		return paramValue.trim();
	}

	public String getParameter(String parameterName) {
		String paramValue = null;
		String[] parameterValues = getParameterValues(parameterName);
		if (parameterValues != null) {
			paramValue = parameterValues[0];
		}
		return paramValue;
	}

	public String getParameter(String parameterName, String defaultValue, boolean isMemory) {
		String value = getParameter(parameterName, defaultValue);
		return value;
	}

	/**
	 * @param parameterName
	 *            String
	 * @param defaultValue
	 *            int 找不到parameterName，返回defaultValue
	 * @param defaultValue2
	 *            int 找到parameterName，但值为""，返回defaultValue2
	 * @return int
	 */
	public int getParameter(String parameterName, int defaultValue, int defaultValue2) throws Exception {
		String paramValue = getParameter(parameterName, String.valueOf(defaultValue));
		int value = 0;
		if (paramValue.equals("")) {
			value = defaultValue2;
		} else {
			try {
				value = Integer.parseInt(paramValue);
			} catch (Exception ex) {
			}
		}
		return value;
	}

	public int getParameter(String parameterName, int defaultValue, int defaultValue2, boolean isMemory) throws Exception {
		String paramValue = getParameter(parameterName, String.valueOf(defaultValue));
		int value = 0;
		if (paramValue.equals("")) {
			value = defaultValue2;
		} else {
			try {
				value = Integer.parseInt(paramValue);
			} catch (Exception ex) {
			
			}
		}
		return value;
	}

	public int getParameter(String parameterName, int defaultValue) throws Exception {
		return getParameter(parameterName, defaultValue, 0);
	}


}
